var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// src/createField/Field.tsx
var Field_exports = {};
__export(Field_exports, {
  default: () => Field_default
});
module.exports = __toCommonJS(Field_exports);
var import_utils = require("@szzj/utils");
var import_react = __toESM(require("react"));
var import_register = __toESM(require("../FieldDetail/register"));
var import_FormItem = __toESM(require("../FormItem"));
var import_FormAttrsContext = require("../_utils/contexts/FormAttrsContext");
var import_consts = require("./consts");
var import_utils2 = require("./utils");
var import_antd = require("antd");
function Field({
  children,
  detail: detailProp,
  detailType: detailTypeProp = "text",
  DetailComponent: DetailComponentProp,
  FieldComponent,
  ...rest
}, ref) {
  const form = import_antd.Form.useFormInstance();
  const { detail } = (0, import_FormAttrsContext.useFormAttrsContext)();
  const isDetail = (0, import_react.useMemo)(() => {
    return detailProp !== void 0 ? detailProp : detail;
  }, [detail, detailProp]);
  const formItemProps = (0, import_react.useMemo)(
    () => (0, import_utils.pick)(rest, isDetail ? import_consts.DetailFormItemPropNames : import_consts.FormItemPropNames),
    [rest, isDetail]
  );
  const fieldProps = (0, import_react.useMemo)(() => {
    const result = (0, import_utils.omit)(rest, import_consts.FormItemPropNames);
    if (isDetail && formItemProps.valuePropName)
      result.valuePropName = formItemProps.valuePropName;
    return result;
  }, [rest, formItemProps, isDetail]);
  const { formItemClassName, formItemStyle, rules, ...formItemRest } = formItemProps;
  const DetailComponent = (0, import_react.useMemo)(
    () => DetailComponentProp ? DetailComponentProp : import_register.default[detailTypeProp] ?? import_register.default.text,
    [DetailComponentProp, detailTypeProp]
  );
  if (isDetail) {
    return /* @__PURE__ */ import_react.default.createElement(
      import_FormItem.default,
      {
        className: formItemClassName,
        style: formItemStyle,
        ...formItemRest
      },
      /* @__PURE__ */ import_react.default.createElement(DetailComponent, { ...fieldProps }, children)
    );
  }
  return /* @__PURE__ */ import_react.default.createElement(
    import_FormItem.default,
    {
      className: formItemClassName,
      style: formItemStyle,
      ...formItemRest,
      rules: (0, import_utils2.enhanceRules)(form, rules)
    },
    /* @__PURE__ */ import_react.default.createElement(FieldComponent, { ...(0, import_utils2.enhanceFieldProps)(fieldProps, rules, form), ref }, children)
  );
}
var Field_default = (0, import_react.forwardRef)(Field);
